package cc.rengu.igas.cops.common.dao;

import cc.rengu.igas.cops.common.entity.CopsOpmsUserInfo;
import cc.rengu.oltp.utility.bean.PageInfo;
import cc.rengu.oltp.utility.bean.PageResult;
import cc.rengu.oltp.utility.util.DbsUtil;

/**
 * 用户信息表(T_P_OPMS_USER_INFO)操作接口
 */
public interface CopsOpmsUserInfoMapper {


    /**
     * 用户注册登记用户信息
     *
     * @param opmsUserInfo 实体
     * @return 0-成功，其它-失败
     */
    int insertOpmUserInfo(CopsOpmsUserInfo opmsUserInfo) throws Exception;

    /**
     * @param opmsUserInfo
     * @return
     * @throws Exception
     */
    int insertOpmUserInfoWithTrancation(CopsOpmsUserInfo opmsUserInfo, DbsUtil dbsUtil) throws Exception;

    /**
     * 根据 机构号/用户所属主体/用户标识 查询
     *
     * @param instId   机构号
     * @param userInst 用户所属主体
     * @param userId   用户标识
     * @return 实体
     */
    CopsOpmsUserInfo selectOpmsSysUserInfoByInstIdUserInstUserId(String instId, String userInst, String userId) throws Exception;

    /**
     * 根据 机构号/用户所属主体/核心客户号 查询
     *
     * @param instId     机构号
     * @param userInst   用户所属主体
     * @param hostCustNo 核心客户号
     * @return 实体
     */
    CopsOpmsUserInfo selectOpmsSysUserInfoByInstIdUserInstHostNo(String instId, String userInst, String hostCustNo) throws Exception;

    /**
     * 根据 机构号/用户所属主体/用户姓名/证件类型/证件号 查询
     *
     * @param instId
     * @param userInst
     * @param userName
     * @param certType
     * @param certId
     * @return
     * @throws Exception
     */
    CopsOpmsUserInfo selectOpmsSysUserInfoByUserAccountInfo(String instId, String userInst, String userName, String certType, String certId) throws Exception;

    /**
     * 更新用户信息表
     *
     * @param userInfo 用户实体
     * @return 操作接口
     */
    int updateOpmsSysUserInfo(CopsOpmsUserInfo userInfo) throws Exception;

    /**
     * 查询客户签约信息
     *
     * @param instId
     * @param certType
     * @param certNo
     * @param mobile
     * @param status
     * @param startDate
     * @param endDate
     * @param pageInfo
     * @return
     */
    PageResult selectCustomSignInfoByNotNullParams(String instId, String certType, String certNo, String mobile, String status, String startDate, String endDate, String signType, PageInfo pageInfo) throws Exception;

    /**
     * 根据证件类型证件号查询用户信息
     *
     * @param instId
     * @param userInst
     * @param certType
     * @param certNo
     * @return
     * @throws Exception
     */
    CopsOpmsUserInfo selectOpmsSysUserInfoByCertType(String instId, String userInst, String certType, String certNo) throws Exception;

}
